package base.day13;

import javax.print.attribute.standard.Sides;
import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
    public static void main(String[] args) {
        //创建集合，存储student类
        ArrayList<Student> list=new ArrayList<>();
        Scanner sc=new Scanner(System.in);
        //循环显示输出结果
        lo:while (true){
            System.out.println("--------学生管理系统---------");
            System.out.println("1 添加学生信息");
            System.out.println("2 删除学生信息");
            System.out.println("3 修改学生信息");
            System.out.println("4 查看所有学生");
            System.out.println("5 退出");
            System.out.println("请输入你的选择:");
            String choice=sc.nextLine();
            switch (choice){
                case "1":
                    System.out.println("添加学生");
                    addStudent(list);
                    break;
                case "2":
                    System.out.println("删除学生");
                    removeStudent(list);
                    break;
                case "3":
                   System.out.println("修改学生");
                   changeStudent(list);
                   break;
                case "4":
                    System.out.println("查看学生");
                    findStudent(list);
                    break;
                case "5":
                    System.out.println("退出成功");
                    break lo;
                default:
                    System.out.println("输入有误，请重新输入");
                    break;
            }
        }
    }
    //修改学生信息
    private static void changeStudent(ArrayList<Student> list) {
        //键盘录入
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要修改学生信息的学号：");
        String sid=sc.next();
        int index= getindex(list,sid);
        //判断学生是否存在
        //不存在
        if(index==-1){
            System.out.println("查无信息，请重新输入");
        }
        //存在
        else{
            //键盘录入学生信息
            System.out.println("请输入姓名：");
            String name=sc.next();
            System.out.println("请输入年龄：");
            int age=sc.nextInt();
            System.out.println("请输入生日：");
            String birthday=sc.next();
            //将信息封装进student类
            Student stu=new Student(sid,name,age,birthday);
            //set替换学生
            list.set(index,stu);
            System.out.println("修改成功");
        }
    }
    //添加学生
    public static void addStudent(ArrayList<Student> list){
        while (true){
            //键盘录入学生学号
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入学号：");
            String sid=sc.next();
            //判断学号是否重复
            int index=getindex(list,sid);
            //学号不存在
            if (index==-1){
                System.out.println("请输入姓名：");
                String name=sc.next();
                System.out.println("请输入年龄：");
                int age=sc.nextInt();
                System.out.println("请输入生日：");
                String birthday=sc.next();
                Student stu=new Student(sid,name,age,birthday);
                //将封装好的学生对象添加进容器中
                list.add(stu);
                //给出添加成功的信息
                System.out.println("添加成功");
                break;
            }
            //学生存在
            else{
                System.out.println("学号已重复，请重新输入");
            }
        }
    }
    //删除学生
    private static void removeStudent(ArrayList<Student> list) {
        //键盘录入
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要删除学生的学号：");
        String sid=sc.next();
        //判断是否有相同学号
        int index=getindex(list,sid);
        //存在
        if (index==-1){
            System.out.println("查无信息");
        }
        //不存在
        else{
            list.remove(list.get(index));
            System.out.println("已删除");
        }

    }
    //判断学生sid学号是否存在
    public static int getindex(ArrayList<Student> list,String sid){
        int index=-1;
        //循环集合中student类
        for (int i = 0; i < list.size(); i++) {
            Student stu=list.get(i);
            String id = stu.getSid();
            //判断stu类中是否有相同sid学号的学生
            if (id.equals(sid)){
                index=i;
            }
        }
        return index;
    }
    //查看所有学生信息
    private static void findStudent(ArrayList<Student> list) {
        //查找学号
        //用size长度判断是否有对象
        if(list.size()==0){
            System.out.println("没有数据");
        }
        else {
            System.out.println("------查找成功------");
            System.out.println("学号\t\t姓名\t\t年龄\t\t生日");
            for (int i = 0; i <list.size() ; i++) {
                System.out.println(list.get(i).getSid()+"\t\t"+list.get(i).getName()+"\t\t"+list.get(i).getAge()+"\t\t"+list.get(i).getBirthday());
            }
        }
    }
}
